package cqrtplm.service;

import cqrtplm.dto.GenerateDescriptionRuleDto;
import cqrtplm.entity.CodeDrawingDO;
import cqrtplm.entity.CodeMaterialDO;
import cqrtplm.vo.DescriptionVO;

import java.math.BigInteger;
import java.util.List;
import java.util.Map;

public interface CodeSequenceService {

    /**
     * 图样代号生成
     * @param dto
     * @return
     */
    String generateDrawingCode(CodeDrawingDO dto);

    /**
     * 生成物料码
     * @param dto
     * @return
     */
    String generateMaterialCode(CodeMaterialDO dto);

    /**
     * 图样代号升级
     * @param drawingCode old图样代号
     */
    void drawingCodeUpgraded(String drawingCode);

    /**
     * 生成描述
     * @param
     * @return
     */
    DescriptionVO generateDescriptionRule(GenerateDescriptionRuleDto dto, Boolean flag);

    /**
     * 生成标准件号
     * @return
     */
    String generateStandardCode(String classCode, Map<String, String> ibaMap);

    /**
     * 生成EBOM号
     * @param devOrder 开发令
     * @return
     */
    String generateEBOMCode(String devOrder);

    /**
     * 生成工艺编码
     * @return
     */
    String generateProcessCode();

    String selectCategoryCodeByClassId(BigInteger classId);

    List<String> checkCurrentDescriptionIfExist(String ibaAttrName, String systemDescribe, String typeInthid);

}
